// class 类
// readonly  只读属性
// 静态方法和属性 static 
// 静态方法和属性的调用 是有类名直接调用  不用实例化对象
class Person{
     name:string;
     readonly age:number;
    static hobby:Array<string>=["唱","跳","篮球"]
    constructor(name:string,age:number){
      this.name=name;
      this.age=age;
    }
    get fullName(){ //get 类的属性
      return this.name+"hello"
    }
    // set 负责 设置值 拦截到最新的值
    set fullName(val:string){
          this.name=val;
    }
    say(){
      console.log("老色批")
    }
    static run(){
        console.log("昨天跑了三公里");
    }

}
var dehua=new Person("刘德华",55);
console.log(dehua.name)
dehua.fullName="四大天王 刘德华"
console.log(dehua.fullName)
dehua.say();
Person.run()
console.log(Person.hobby)

// 抽象类 不能实例化 只能继承后使用
abstract class Animal{
  abstract jiao() //抽象一个方法
  run(){}
}
// 继承后 可以实现抽象类中的方法
class Dog extends Animal{
    name:string
    constructor(){
        super()
    }
    jiao(){
      
    }
}
